const express = require('express')
const path = require('path')
const app = express()//构造express实例
const port = '3000'
const memberRouter = require('./router/member')
const goodsRouter = require('./router/goods')
//1.注册路由
//app.use(memberRouter)
//增加路由前缀避免路由地址相同导致冲突，即命名空间
app.use('/member', memberRouter)//	/member/list
app.use('/goods', goodsRouter)//	/goods/list

//2.开放静态资源访问  html css js 图片等
//提供给 express.static 函数的路径是一个相对node进程启动位置的相对路径。如果在src目录下直接node app.js启动位置就是src则会找不到资源，更稳妥的方式是使用静态资源文件夹的绝对路径
//app.use(express.static('public'))//localhost:3000/xxx(publick文件夹下的资源)  开放public文件夹下的静态资源   express在静态资源中查找文件，因此目录名不会会出现在url中
//app.use('/test', express.static('static'))//localhost:3000/test/(publick文件夹下的资源)  开放static文件夹下的静态资源 指定路径创建虚拟前缀/test
console.log('__dirname',__dirname)//当前启动文件所在的目录    绝对路径   E:\personalProjects\nodejs\02express-demo\src
app.use(express.static(__dirname))//http://localhost:3000/(src下所有资源)  开放__dirname路径下的静态资源
app.use('/static', express.static(path.join(__dirname, 'zqf')))//http://localhost:3000/static/(zqf下所有资源)  path.join()为拼接路径语法
//app.use('/static', express.static(__dirname + '/zqf'))//和上面path.join()等效

//app.METHOD(PATH, HANDLER)
//postMan输入localhost(127.0.0.1):3000/name/123	即可查看该响应信息，注意请求方式
//1.通过请求方法类型  get post put delete
app.get('/demo', (req, res)=>{
	res.json({
		message: 'router from get'
	})
})
app.post('/demo', (req, res)=>{
	res.json({
		message: 'router from post'
	})
})
app.get('/name/:age', (req, res)=>{
	
	let {age} = req.params
	/* res.send({
		name: 'tom',
		age,
	}) */
	res.json({
		name: 'tom',
		age,
	})
})
//2.通过uri
//localhost:3000/company/user?name=zqf访问
app.post('/company/user', (req, res)=>{
	let {name} = req.query
	res.send({
		name
	})
})

//忽略请求方式
/* app.all('/allmethod', (req, res)=>{
	res.send({
		methods: req.method
	})
}) */
//响应任何请求（放到路由的最后面，否则会优先匹配该路由）
/* app.all('*', (req, res)=>{
	res.send({
		message: 'allrequest'
	})
}) */

app.listen(port, ()=>{
	console.log(`zqf-server is started, listening port: ${port}`)
})
